#include<iostream>
#include<vector>

using namespace std;

#include"BinarySearchTree.h"

void testop1()
{
	Su::BST<int> bt;
	bt.Insert(1);
	bt.Insert(2);
	bt.Insert(3);
	bt.Insert(4);
	bt.Insert(100);
	bt.Insert(-2);

	bt.InOrder();

	Su::BSTN<int>* it = bt.Find(1);
	cout << "Find:" << (it->_node) << endl;

	Su::BSTN<int>* it2 = bt.Find(100);
	cout << "Find:" << (it2->_node) << endl;

	Su::BSTN<int>* it3 = bt.Find(-2);
	cout << "Find:" << (it3->_node) << endl;

	cout << endl;
}

void testop2()
{
	Su::BST<int> bt;

	bt.Insert(1);
	bt.Insert(2);
	bt.Insert(3);
	bt.Insert(4);
	bt.Insert(100);
	bt.Insert(-2);
	bt.Insert(20);

	bt.InOrder();

	bt.Erase(4);
	bt.InOrder();

	bt.Erase(1);
	bt.InOrder();

	bt.Erase(-2);
	bt.InOrder();

	bt.Erase(100);
	bt.InOrder();

	cout << endl;
}
void testop3()
{
	Su::BST<string> bt;
	bt.Insert("Hello");
	bt.Insert("World");
	bt.Insert("!");

	bt.InOrder();
}
int main()
{
	testop1();
	testop2();
	testop3();
	return 0;
}